]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
Avoid popping the workspace controls in and out at the end of DND
authorOwen W. Taylor <otaylor@fishsoup.net>
Sun, 30 Jan 2011 21:38:13 +0000 (16:38 -0500)
committerOwen W. Taylor <otaylor@fishsoup.net>
Wed, 9 Feb 2011 00:43:21 +0000 (19:43 -0500)
At the end of a drag operation, we would invoke the code to slide the
controls in (because we were no longer DND'ing and not hovering) and
then immediately afterwards invoke the code to slide it back out when
we got the ENTER event from the end of DND. While the immediately
overridden tween probably won't have any visible effect it's better
to avoid this, so wait to update the zoom state until BEFORE_REDRAW.

https://bugzilla.gnome.org/show_bug.cgi?id=640996

js/ui/workspacesView.js

index 3ab93bb177323908006e7e50e88126a181fd8764..124629960a59b24c0dd891f7a3f951347c1dd6be 100644 (file)
@@ -3,6 +3,7 @@
 const Clutter = imports.gi.Clutter;
 const Lang = imports.lang;
 const Mainloop = imports.mainloop;
+const Meta = imports.gi.Meta;
 const Shell = imports.gi.Shell;
 const St = imports.gi.St;
 const Signals = imports.signals;
@@ -992,7 +993,14 @@ WorkspacesDisplay.prototype = {
 
     _dragEnd: function() {
         this._inDrag = false;
-        this._updateZoom();
+
+        // We do this deferred because drag-end is emitted before dnd.js emits
+        // event/leave events that were suppressed during the drag. If we didn't
+        // defer this, we'd zoom out then immediately zoom in because of the
+        // enter event we received. That would normally be invisible but we
+        // might as well avoid it.
+        Meta.later_add(Meta.LaterType.BEFORE_REDRAW,
+                       Lang.bind(this, this._updateZoom));
     }
 };
 Signals.addSignalMethods(WorkspacesDisplay.prototype);